package a_doubleWrite;

import java.lang.reflect.Array;
import java.util.Arrays;

/**
 * 37. 解数独
 * 编写一个程序，通过填充空格来解决数独问题。
 * <p>
 * 数独的解法需 遵循如下规则：
 * <p>
 * 数字 1-9 在每一行只能出现一次。
 * 数字 1-9 在每一列只能出现一次。
 * 数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。（请参考示例图）
 * 数独部分空格内已填入了数字，空白格用 '.' 表示。
 *
 * @author: luolidong
 * @create: 2021-07-20 16:04
 * @version: 1.0
 */
public class L37 {

    public void solveSudoku(char[][] board) {
        check(board);
        System.out.println(Arrays.toString(board));
    }

    public boolean check(char[][] board) {
        return true;
    }

    private boolean judge(char[][] board, int i, int j, char k) {
        for (int l = 0; l < 9; l++) {
            if (board[l][j] == k) return false;
        }
        //列不重复
        for (int l = 0; l < 9; l++) {
            if (board[i][l] == k) return false;
        }
        //方格不重复
        int startI = (i / 3) * 3;//取i对应方格的开始索引
        int startJ = (j / 3) * 3;
        for (int l = startI; l < startI + 3; l++) {
            for (int m = startJ; m < startJ + 3; m++) {
                if (board[l][m] == k) return false;
            }
        }
        return true;
    }

    public static void main(String[] args) {
        L37 l37 = new L37();
//        l37.solveSudoku();
    }
}
